package org.tis.tools.senior.module.developer.dao;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;
import org.tis.tools.senior.module.developer.entity.SProfiles;
import org.tis.tools.senior.module.developer.entity.SWorkitem;
import org.tis.tools.senior.module.developer.entity.vo.DeliveryProfilesDetail;
import org.tis.tools.senior.module.developer.entity.vo.DeliveryResultCountDetail;
import org.tis.tools.senior.module.developer.entity.vo.ProfileBranchDetail;
import org.tis.tools.senior.module.developer.entity.vo.WorkTypeCountDetail;

import java.util.Date;
import java.util.List;

/**
 * sProfiles的Mapper类
 * 
 * @author Auto Generate Tools
 * @date 2018/06/20
 */
public interface SProfilesMapper extends BaseMapper<SProfiles>  {

    /**
     * 查询所有运行环境及分页
     * @param rowBounds
     * @param wrapper
     * @return
     */
    List<ProfileBranchDetail> selectProfileDetail(RowBounds rowBounds,
                                                   @Param("ew") Wrapper<ProfileBranchDetail> wrapper);
    /**
     * 统计此环境有多少工作项投放的总数
     * @param guidProfiles
     * @return
     */
    List<Integer> selectPutWorkitemCount(Integer guidProfiles);

    /**
     * 统计此运行环境有多少投放申请
     * @param guidProfiles
     * @return
     */
    int selectDeliveryCount(Integer guidProfiles);

    /**
     * 查询此运行环境的投放申请按状态分类
     * @param guidProfiles
     * @return
     */
    List<DeliveryResultCountDetail> selectProfilesDeliveryStatusClassify(Integer guidProfiles);

    /**
     * 此环境投放过的工作项的工作项类型分类统计
     * @param guidProfiles
     * @return
     */
    List<WorkTypeCountDetail> selectWorkTypeCount(Integer guidProfiles);

    /**
     * 按日投放申请统计
     * @param date
     * @param guidProfiles
     * @return
     */
    List<DeliveryResultCountDetail> selectPeriodDeliverys(@Param("date") Date date,
                                                          @Param("guidProfiles") Integer guidProfiles);

    /**
     * 统计每个环境的投放申请数量
     * @return
     */
    List<DeliveryProfilesDetail> selectProfilesDeliveryCount();

    /**
     * 查询此环境投放过的所有工作项
     * @param rowBounds
     * @param wrapper
     * @return
     */
    List<SWorkitem> selectPutWorkitemDetail(@Param("guidProfiles") Integer guidProfiles, RowBounds rowBounds,
                                            @Param("ew") Wrapper<SWorkitem> wrapper);
}

